package robotdanceur;

import java.io.File;
import java.io.IOException;

import bluenext.CommonInterface;
import bluenext.ErreurNXTException;

/** */
public class Ctrl {
	
	/**interfeca commmune pour controler les NXT */
	CommonInterface inter;
	/** interface graphique*/
	Gui gui;
	
	/**construteur */

	 public Ctrl() {
		 inter= new CommonInterface();
		 gui = new Gui(this);
	 }
	 
	 /** Connecte un robot
	  * @param NXTName nom du robot NXT
      * @return Etat de la connexion
      * @throws ErreurNXTException
      * 		code ERREUR_REF_ROBOT : Le robot n'est pas connue
      * 							code ADRESS_INCORECT : l'adresse du du robot n'est pas correcte
      * 							code ERREUR_CONNEXION : la connexion a echoue
      * 							code ERREUR_CREATION_OBJET_NXT : erreur creation objet NXT
      * */
	 public boolean Connecter ( String NXTName) throws ErreurNXTException{
		 return inter.connect(NXTName);
	 }
	 
	 /** Deconnecte un robot
	  * @param NXTName nom du robot NXT
      * @throws IOException
      * */
	 public void Deconnecter ( String NXTName) throws IOException{
		inter.disconnect(NXTName); 
	 }
	 
	 /** Recherche les robots � proximit�
      * @return liste des noms des robots trouves
      * @throws ErreurNXTException
      * 		code ERREUR_CREATION_OBJET_NXT: erreur creation objet NXT
      * 		code ERREUR_SEARCH: La recherche des robot a echoue
      * */
	 public String[] Search () throws ErreurNXTException{
		 return inter.search();
	 }
	 
	 /** Envoi un programme a un robot
	  * @param NXTName nom du robot
	  * @param FileName chemin du fichier a telecharger
	  * @param FileNameNXT emplacement du fichier sur le robot
      * @return message de compte rendu
      * @throws ErreurNXTException
      * 		code ERREUR_REF_ROBOT : le robot n'est affecte a aucune adresse
      * 	    code ROBOT_PAS_CONNECTE : le robot n'est pas connecte
      * @throws IOException 

      * */
	 public String SendProg(String NXTName, String FileName, String FileNameNXT) throws IOException, ErreurNXTException{
		 File fichier= new File(FileName);
		 if (fichier != null){
			 return inter.uploadFile(NXTName, fichier, FileNameNXT);
		 }
		 else return "chemin du fichier incorrect";
	 }
	 
	 /** Envoi  de donnees a un robot
	  * @param NXTName nom du robot
	  * @param Data donnees a envoye au robot
      * @throws ErreurNXTException
      * 		code ERREUR_REF_ROBOT : le robot n'est affecte a aucune adresse
      * 	    code ROBOT_PAS_CONNECTE : le robot n'est pas connecte
      * @throws IOException 

      * */
	 public void SendData(String NXTName,byte[] Data) throws IOException, ErreurNXTException{
		//System.out.println(Data);
             
             Integer taille =Data.length;
             String size = taille.toString();
             inter.write(NXTName,size.getBytes() );
              //inter.write(NXTName, Data);
             inter.write(NXTName, Data);

	 }
	 
	 /**
      * executer un programme d'un robot
      * @param nxtName nom du robot
      * @param fileName nom du programme
      * @return 0 si succes
      * @throws ErreurNXTException 
      * 		code ERREUR_REF_ROBOT : le robot n'est affecte a aucune adresse
      * 		code ROBOT_PAS_CONNECTE : le robot n'est pas connecte
      * @throws IOException 
      */
	 public byte StartProg(String NXTName, String ProgName) throws IOException, ErreurNXTException{
		 //byte result= inter.startProgram(NXTName, ProgName);
                 // return result;
             return inter.startProgram(NXTName, ProgName);
	 }

        public static void main(String[] args) {
        Ctrl controleur = new Ctrl();
      }

}

